# 引入用到的各种库
from flask import Flask, render_template, request, session, make_response, flash
from io import BytesIO
# 引入生成验证码函数所在的py文件
import VerificationCode

app = Flask(__name__)
# 创建安全码，后面使用session时的前提条件，后面的值可以根据需要变化
app.config["SECRET_KEY"] = "156456dsadasd"

@app.route('/') # 主路由，直接定位到index.html
def index():
    return render_template("index.html")

@app.route('/getVerificationCode') # 获取验证码路由
def getVerificationCode():
    # 调用VerificationCode文件中的creatVerificationCode函数生成验证码，并用第1个参数接收图片，第2个参数接收字符
    image_code, char_code = VerificationCode.creatVerificationCode(6)
    # 生成local_buffer对象，以实现在内存中读写bytes
    buffer = BytesIO()
    # 将验证码图片以jpeg格式保存到内存中
    image_code.save(buffer, 'jpeg')
    # 定义一个名为response的响应,内容是内存中的图片文件
    response = make_response(buffer.getvalue())
    # 为响应定义头部关键字段,表明为图片
    response.headers['Content-Type'] = 'image/gif'
    # 验证码字符串存储在seesion中,以供校验输入是否正确
    session['veryficationCode'] = char_code
    # 返回生成的response响应对象,即验证码图片
    return response

@app.route('/checkVerificationCode',methods=['POST']) # 检查输入验证码路由
def checkVerificationCode():
    # 将用户输入的验证码和session中的验证码全部转为大写进行比较.如果相同，提示“验证码输入正确”否则提示“验证码输入错误”
    if request.form.get('user_input_code').upper() == session.get('veryficationCode').upper():
        flash('验证码输入正确')
    else:
        flash('验证码输入错误')
    return render_template('index.html')

if __name__ == "__main__":
    app.run()



